Conventional data processing systems rely on the ability of software applications that execute within computer systems to efficiently interoperate to exchange data to perform processing operations on the data. Software designers often develop conventional software applications using object-oriented computer programming languages such as C++ and/or Java. Using an object-oriented programming language environment, a software developer can write software code that defines a set of objects as object or class definitions contained within an object model. A typical object defined by a class in an object model contains data structure definitions that store data to be manipulated by the software application. In addition, the object can further define methods or functions that the software application can use during operation to manipulate the data stored within the data structure definitions for that object.
During operation (e.g., execution or interpretation) of a conventional software application developed using an object-oriented programming language, the software application instantiates an object from the object model and populates its data structure definitions with application data received from an input source. Once such objects are instantiated, the application can use the functions or methods defined within the object to manipulate or otherwise access or process the data stored within the data structures of the object in response to calls to those methods or functions. One beneficial feature of the conventional object-oriented software development paradigm is that objects can inherit from one another (i.e., can be built upon top of one another) as a series of building blocks and once an object is developed and tested, it can be reused for many different purposes thus saving development time for future versions or revisions of a software application.
Other conventional software development technologies provide software developers with the ability to create distributed software applications, also referred to herein as client server software applications. Generally, a distributed software application includes two or more separately operating portions of software application code, such as a client portion of code and a server portion of code, that typically execute on different computer systems during run-time operation of the software application.
As an example, software developers may create a client software application (hereinafter referred to simply as a client) that executes on a client computer system and provides a graphical user interface or other processing for interaction with an end-user of the software application during run-time. The client may further include software code that receives and converts user input obtained from a graphical user interface into object-oriented data structures (i.e., objects) that the client then transmits using client requests to a server software application (hereinafter referred to as a server) for processing. The data transferred between the client and the server typically has an agreed upon format and may be encoded in a formatting or markup language such as the extensible markup language (XML). XML formatted objects can be transferred from the client to the server using a remote method invocation protocol such as the Simple Object Access Protocol (SOAP) or by using a conventional distributed software development and operating environment such as the Common Object Request Broker Architecture (CORBA).
Generally however, to perform this type of processing, the client requires access to the object model containing the object definitions to be used for transmission of client data within client requests to the server. The server in turn receives the client requests and processes these requests using objects from the same object model that defines the objects containing the data structures provided from that client within the client requests. The server may further operate to process the client request data within client objects and produce response data that the server stores in these same objects for transmission back to the client within one or more server responses (again using SOAP/XML or CORBA, for example). Generally then, even though the client and server are developed and execute as separate individual software programs, applications or processes within different computer systems, they are able to interact with each other by both referencing the same object-oriented data structures defined in objects within a common or shared object model referenced by both the client and server software applications.